﻿using System;
using System.Collections.Generic;
using System.Data;
using ClassDataExport;


namespace StatisticsTest
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Auto> autos1 = new List<Auto>();
            autos1.Add(new Auto("BMW", "DD-ER 666"));
            
            //Liste aus Personen die später ausgegeben werden sollen
            List<Person> personen = new List<Person>();
            personen.Add(new Person("Renatus", "Johannes", 1452.23, new DateTime(1982,3,15),null, true, 500));
            personen.Add(new Person("Renatus", null, 1600.56, new DateTime(1980, 2, 9), new List<Auto>(), false, 600));
            personen.Add(new Person(null, "Thomas", 2800, new DateTime(1980, 1, 31), autos1, false, 700));
            personen.Add(new Person("Müller", "Kai", 1732.67, new DateTime(1981, 8, 30), autos1, true, new decimal(234.53)));
            personen.Add(new Person("Müller", "Hannah", 2400.07, new DateTime(1979,6,24),autos1, false, 999));
            personen.Add(new Person("Handke", "David", 400.00, new DateTime(1984,8,11),autos1, true, 011));

            //Beispiel für OutPutliste Properties die angezeigt werden sollen inkl. Formatstrings.
            SortedList<int, OutputProperties> ausgabeTypen = new SortedList<int, OutputProperties>();
            ausgabeTypen.Add(0, new OutputProperties("Vorname", string.Empty, string.Empty));
            ausgabeTypen.Add(1, new OutputProperties("Name", string.Empty, string.Empty));
            ausgabeTypen.Add(2, new OutputProperties("Gehalt", "Netto Gehalt", "#,#00.00 EUR"));
            ausgabeTypen.Add(3, new OutputProperties("Geburtsdatum", "Geburtsjahr" , "yyyy"));
            ausgabeTypen.Add(4, new OutputProperties("IsMarried", "Verheiratet" , null));
            ausgabeTypen.Add(5, new OutputProperties("Ausgaben", string.Empty, "##.### EUR"));

            ClassDataExport<Person> personenClassDataExport = new ClassDataExport<Person>(personen);
            personenClassDataExport.OutputList = ausgabeTypen;
            Console.WriteLine(personenClassDataExport.GetDataOutput().GetCSV());

            //Erstellen einer Exceldatei
            personenClassDataExport.GetDataOutput().CreateExcelFile(@"c:\Temp\test.xlsx");
            personenClassDataExport.GetDataOutput().GetCSV(@"c:\Temp\test.csv");

            //Extension Methods nutzen
            string csv = personen.GetCSV(ausgabeTypen);


            Console.WriteLine("Personen Ausgabe über Attribute:");
            ClassDataExport<Person> personenAttributExport = new ClassDataExport<Person>(personen, true);
            Console.WriteLine(personenAttributExport.GetDataOutput().GetCSV());


            Console.ReadLine();

        }
    }
}
